package net.lzzy.practices.entities;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import java.util.UUID;

/**
 * @author admin
 */
@NoArgsConstructor(access = AccessLevel.PROTECTED) //通过注解的方式自动生成一些样板代码（boilerplate code），从而减少开发人员手动编写代码的工作量，使代码更加简洁//
@MappedSuperclass //它用于定义一个基类，这个基类的目的是为其他实体类提供通用的映射信息，但本身不会被当作一个独立的实体映射到数据库表中。//

public class BaseEntity {
    @Getter
    @Setter
    @Id /**标识主建*/
    @GeneratedValue(generator = "uuid2") /**用于指定实体类主键生成方式的注解。它通常与@Id注解一起使用，@Id用于标识主键，而@GeneratedValue则说明这个主键是如何生成的。*/
    @GenericGenerator(name = "uuid2",strategy = "uuid2") /**用于定义自定义主键生成器的注解*/
    @Column(columnDefinition = "BINARY(16)") /**数据库类型*/
    protected UUID id;

}
//456